home *** CD-ROM | disk | FTP | other *** search
- (*----------------------------------------------------------------------*)
- (* Process_Host_Commands --- Process main menu commands *)
- (*----------------------------------------------------------------------*)
-
- OVERLAY PROCEDURE Process_Host_Commands( VAR Done: BOOLEAN );
-
- (*----------------------------------------------------------------------*)
- (* *)
- (* Procedure: Process_Host_Commands *)
- (* *)
- (* Purpose: Controls processing of main menu commands. *)
- (* *)
- (* Calling Sequence: *)
- (* *)
- (* Process_Host_Commands( VAR Done: BOOLEAN ); *)
- (* *)
- (* Done --- set TRUE if quit command entered or carrier *)
- (* dropped. *)
- (* *)
- (*----------------------------------------------------------------------*)
-
- VAR
- Back : BOOLEAN;
- Ch : CHAR;
- Sysop_Found : BOOLEAN;
-
- (*----------------------------------------------------------------------*)
- (* Display_Host_Commands --- Display command list for remote user *)
- (*----------------------------------------------------------------------*)
-
- PROCEDURE Display_Host_Commands;
-
- (*----------------------------------------------------------------------*)
- (* *)
- (* Procedure: Display_Host_Commands *)
- (* *)
- (* Purpose: Displays menu of PibTerm host commands and prompts *)
- (* for command entry. *)
- (* *)
- (* Calling sequence: *)
- (* *)
- (* Display_Host_Commands; *)
- (* *)
- (*----------------------------------------------------------------------*)
-
- BEGIN (* Display_Host_Commands *)
-
- IF ( NOT Expert_On ) THEN
- BEGIN
- Host_Send_String_With_CR('======================================================');
- Host_Send_String_With_CR('= PibTerm Host Mode Main Menu =');
- Host_Send_String_With_CR('======================================================');
- Host_Send_String_With_CR(' ');
- Host_Send_String_With_CR(' E=Enter message');
- Host_Send_String_With_CR(' R=Read message');
- Host_Send_String_With_CR(' S=Scan messages');
- Host_Send_String_With_CR(' P=Personal message scan');
- Host_Send_String_With_CR(' Q=Quit and logoff');
- Host_Send_String_With_CR(' F=File transfers');
- Host_Send_String_With_CR(' G=Gossip mode');
- Host_Send_String_With_CR(' X=Expert mode');
- Host_Send_String_With_CR(' C=Send comments');
- Host_Send_String_With_CR(' ');
- Host_Send_String_With_CR('======================================================');
- Host_Send_String_And_Echo('Enter command ? ');
- END
- ELSE
- BEGIN
- Host_Send_String_With_CR(' ');
- Host_Send_String_And_Echo('Main (E,R,S,P,Q,F,G,X,C) ? ');
- END;
-
- END (* Display_Host_Commands *);
-
- (*----------------------------------------------------------------------*)
- (* Get_A_Message --- Get text of message from user *)
- (*----------------------------------------------------------------------*)
-
- PROCEDURE Get_A_Message( VAR F: Text_File );
-
- (*----------------------------------------------------------------------*)
- (* *)
- (* Procedure: Get_A_Message *)
- (* *)
- (* Purpose: Prompts for line by line message entry. *)
- (* *)
- (* Calling Sequence: *)
- (* *)
- (* Get_A_Message( VAR F: Text_File ); *)
- (* *)
- (* F --- file to write message to. *)
- (* *)
- (* Remarks: *)
- (* *)
- (* This routine handles text entry for both regular messages and *)
- (* comments. *)
- (* *)
- (*----------------------------------------------------------------------*)
-
- BEGIN (* Get_A_Message *)
-
- WITH User_List[Cur_User] DO
- WRITELN( F, '== From: ', Fname, ' ', Lname );
- WRITELN( F, '== To: ',Recipient_Name );
- WRITELN( F, '== Date: ',DateString );
- WRITELN( F, '== Time: ',TimeString( TimeOfDay ) );
- WRITELN( F, '== Subject: ',Message_Subject );
-
- Host_Send_String( CR_LF_Host );
- Host_Send_String_With_CR('Enter message. Empty line terminates.');
-
- REPEAT
- Host_Send_String( CR_LF_Host );
- Host_Prompt_And_Read_String('> ', Message_Line, TRUE );
- IF LENGTH( Message_Line ) > 0 THEN
- WRITELN( F, Message_Line );
- UNTIL ( LENGTH( Message_Line ) = 0 );
-
- WRITELN( F, '== End');
-
- Host_Send_String( CR_LF_Host );
- Host_Send_String_With_CR('Message entered.');
-
- END (* Get_A_Message *);
-
- (*----------------------------------------------------------------------*)
- (* Enter_Message --- Enter a message into message base *)
- (*----------------------------------------------------------------------*)
-
- PROCEDURE Enter_Message;
-
- (*----------------------------------------------------------------------*)
- (* *)
- (* Procedure: Enter_Message *)
- (* *)
- (* Purpose: Enters message into message base. *)
- (* *)
- (* Calling Sequence: *)
- (* *)
- (* Enter_Message; *)
- (* *)
- (*----------------------------------------------------------------------*)
-
- VAR
- Quit: BOOLEAN;
-
- BEGIN (* Enter_Message *)
-
- Quit := FALSE;
- (* Open message file *)
-
- ASSIGN( Message_File, Home_Dir + 'PIBTERM.MSG' );
- (*$I-*)
- RESET ( Message_File );
- (*$I+*)
- (* If it exists, open for append. *)
- (* If it doesn't exist, open for write. *)
- IF Int24Result <> 0 THEN
- BEGIN
- WRITELN('Creating message file PIBTERM.MSG');
- (*$I-*)
- REWRITE( Message_File );
- (*$I+*)
- IF Int24Result <> 0 THEN
- BEGIN
- Host_Send_String_With_CR('Sorry, no more room for messages');
- Quit := TRUE;
- END;
- END
- ELSE
- BEGIN
- (*$I-*)
- CLOSE( Message_File );
-
- APPEND( Message_File );
- (*$I+*)
-
- IF Int24Result <> 0 THEN
- BEGIN
- Host_Send_String( CR_LF_Host );
- Host_Send_String_With_CR('Sorry, no more room for messages');
- Quit := TRUE;
- END;
- END;
-
- Host_Send_String( CR_LF_Host );
- Host_Prompt_And_Read_String('Enter recipient''s name or ALL: ',
- Recipient_Name, TRUE );
-
- Recipient_Name := UpperCase( TRIM( Recipient_Name ) );
-
- IF Recipient_Name = '' THEN
- Recipient_Name := 'ALL';
-
- Host_Send_String( CR_LF_Host );
- Host_Prompt_And_Read_String('Enter title for message: ',
- Message_Subject, TRUE );
-
- IF ( NOT Quit ) THEN
- Get_A_Message( Message_File );
-
- (*$I-*)
- CLOSE ( Message_File );
- (*$I+*)
- (* Increment message count *)
- NMessages := NMessages + 1;
-
- END (* Enter_Message *);
-
- (*----------------------------------------------------------------------*)
- (* Skip_To_Message --- Skip to specified message in message base *)
- (*----------------------------------------------------------------------*)
-
- PROCEDURE Skip_To_Message( Msg_No : INTEGER );
-
- (*----------------------------------------------------------------------*)
- (* *)
- (* Procedure: Skip_To_Message *)
- (* *)
- (* Purpose: Skip to specified message in message base. *)
- (* *)
- (* Calling Sequence: *)
- (* *)
- (* Skip_To_Message( Msg_No : INTEGER ); *)
- (* *)
- (* Msg_No --- Message to skip to. *)
- (* *)
- (* Remarks: *)
- (* *)
- (* The message file must be opened before this routine is *)
- (* called. *)
- (* *)
- (*----------------------------------------------------------------------*)
-
- VAR
- Msg_Count : INTEGER;
-
- BEGIN (* Skip_To_Message *)
-
- Msg_Count := 0;
-
- REPEAT
-
- READLN( Message_File , Message_Line );
-
- IF COPY( Message_Line, 1, 6 ) = '== End' THEN
- Msg_Count := Msg_Count + 1;
-
- UNTIL ( Msg_Count = ( Msg_No - 1 ) );
-
- END (* Skip_To_Message *);
-
- (*----------------------------------------------------------------------*)
- (* Read_Messages --- Read messages from message base *)
- (*----------------------------------------------------------------------*)
-
- PROCEDURE Read_Messages;
-
- (*----------------------------------------------------------------------*)
- (* *)
- (* Procedure: Read_Messages *)
- (* *)
- (* Purpose: Reads messages currently in message base. *)
- (* *)
- (* Calling Sequence: *)
- (* *)
- (* Read_Messages; *)
- (* *)
- (*----------------------------------------------------------------------*)
-
- VAR
- Message_No : INTEGER;
- CMessage_No : STRING[5];
- I : INTEGER;
- Line_Count : INTEGER;
- Read_Done : BOOLEAN;
- Start_Msg : INTEGER;
- Start_M_Str : AnyStr;
- OK_Number : BOOLEAN;
-
- LABEL
- Reading_Done;
-
- BEGIN (* Read_Messages *)
- (* Open message file *)
-
- ASSIGN( Message_File , Home_Dir + 'PIBTERM.MSG' );
- (*$I-*)
- RESET( Message_File );
- (*$I+*)
- (* Not there -- no messages *)
- IF Int24Result <> 0 THEN
- BEGIN
- Host_Send_String( CR_LF_Host );
- Host_Send_String_With_CR('No messages in message file.');
- EXIT;
- END;
- (* Find where to start *)
-
- OK_Number := TRUE;
-
- REPEAT
-
- Host_Send_String_With_CR(' ');
- Host_Prompt_And_Read_String('Enter message to start at or <CR> for all: ',
- Start_M_Str, TRUE );
- Start_Msg := 0;
- FOR I := 1 TO LENGTH( Start_M_Str ) DO
- IF ( Start_M_Str[I] IN ['0'..'9'] ) THEN
- Start_Msg := Start_Msg * 10 + ORD( Start_M_Str[I] ) - ORD('0')
- ELSE
- OK_Number := FALSE;
-
- IF Start_Msg = 0 THEN Start_Msg := 1;
- IF Start_Msg > NMessages THEN Start_Msg := NMessages;
-
- UNTIL ( NOT Host_Carrier_Detect ) OR ( OK_Number );
-
- IF ( NOT Host_Carrier_Detect ) THEN GOTO Reading_Done;
-
- (* Skip to desired message *)
- Skip_To_Message( Start_Msg );
-
- (* Messages always start at one *)
- Message_No := Start_Msg - 1;
- Read_Done := FALSE;
- Line_Count := 0;
- (* Loop over messages *)
- REPEAT
- (* Increment message number *)
-
- Message_No := Message_No + 1;
-
- STR( Message_No : 5 , CMessage_No );
-
- Host_Send_String( CR_LF_Host );
- List_Prompt( Line_Count , Read_Done );
- IF Read_Done THEN GOTO Reading_Done;
-
- Host_Send_String_With_CR('Message #' + CMessage_No);
- List_Prompt( Line_Count , Read_Done );
- IF Read_Done THEN GOTO Reading_Done;
-
- (* Display message # and header info *)
- FOR I := 1 TO 5 DO
- BEGIN
- READLN( Message_File , Message_Line );
- Message_Line := COPY( Message_Line, 4,
- LENGTH( Message_Line ) - 3 );
- Host_Send_String_With_CR( Message_Line );
- List_Prompt( Line_Count , Read_Done );
- IF Read_Done THEN GOTO Reading_Done;
- END;
-
- Host_Send_String_With_CR(' ');
- List_Prompt( Line_Count , Read_Done );
- IF Read_Done THEN GOTO Reading_Done;
-
- (* Display body of message *)
- REPEAT
-
- READLN( Message_File , Message_Line );
-
- IF ( COPY( Message_Line, 1, 6 ) <> '== End' ) THEN
- BEGIN
- Host_Send_String_With_CR( COPY( Message_Line, 2,
- LENGTH( Message_Line ) - 1 ) );
- List_Prompt( Line_Count , Read_Done );
- END;
-
- UNTIL ( COPY( Message_Line, 1, 6 ) = '== End' ) OR ( Read_Done );
-
- UNTIL ( Message_No >= NMessages ) OR Read_Done;
-
- Reading_Done:
-
- (*$I-*)
- CLOSE( Message_File );
- (*$I+*)
-
- END (* Read_Messages *);
-
- (*----------------------------------------------------------------------*)
- (* Scan_Messages --- Scan messages from message base *)
- (*----------------------------------------------------------------------*)
-
- PROCEDURE Scan_Messages( Personal_Only : BOOLEAN );
-
- (*----------------------------------------------------------------------*)
- (* *)
- (* Procedure: Scan_Messages *)
- (* *)
- (* Purpose: Scans message headers currently in message base. *)
- (* *)
- (* Calling Sequence: *)
- (* *)
- (* Scan_Messages( Personal_Only : BOOLEAN ); *)
- (* *)
- (* Personal_Only --- Return messages addressed to current *)
- (* user only. *)
- (* *)
- (*----------------------------------------------------------------------*)
-
- VAR
- Message_Title: AnyStr;
- Message_No : INTEGER;
- CMessage_No : STRING[5];
- I : INTEGER;
- Line_Count : INTEGER;
- Scan_Done : BOOLEAN;
- OK_Number : BOOLEAN;
- Start_Msg : INTEGER;
- Start_M_Str : AnyStr;
- Message_L1 : AnyStr;
- Message_L2 : AnyStr;
- Msg_Count : INTEGER;
-
- LABEL
- Scanning_Done;
-
- BEGIN (* Scan_Messages *)
- (* Open message file *)
-
- ASSIGN( Message_File , Home_Dir + 'PIBTERM.MSG' );
- (*$I-*)
- RESET( Message_File );
- (*$I+*)
- (* Not there -- no messages *)
- IF Int24Result <> 0 THEN
- BEGIN
- Host_Send_String( CR_LF_Host );
- Host_Send_String_With_CR('No messages in message file.');
- GOTO Scanning_Done;
- END;
- (* Find where to start -- if only *)
- (* personal messages, always scan *)
- (* entire message base. *)
- OK_Number := TRUE;
- Start_Msg := 1;
-
- IF ( NOT Personal_Only ) THEN
- REPEAT
- (* Request starting message number *)
-
- Host_Send_String_With_CR(' ');
- Host_Prompt_And_Read_String('Enter message to start at or <CR> for all: ',
- Start_M_Str, TRUE );
-
- (* Convert response to message number *)
- Start_Msg := 0;
-
- FOR I := 1 TO LENGTH( Start_M_Str ) DO
- IF ( Start_M_Str[I] IN ['0'..'9'] ) THEN
- Start_Msg := Start_Msg * 10 + ORD( Start_M_Str[I] ) - ORD('0')
- ELSE
- OK_Number := FALSE;
- (* Ensure message is in range *)
-
- IF Start_Msg = 0 THEN Start_Msg := 1;
- IF Start_Msg > NMessages THEN Start_Msg := NMessages;
-
- UNTIL ( NOT Host_Carrier_Detect ) OR ( OK_Number );
-
- IF ( NOT Host_Carrier_Detect ) THEN GOTO Scanning_Done;
-
- (* Skip to desired message *)
- Skip_To_Message( Start_Msg );
- (* Messages always start at one *)
- Message_No := Start_Msg - 1;
- Line_Count := 0;
- Scan_Done := FALSE;
- Msg_Count := 0;
- (* Loop over messages *)
- REPEAT
- (* Increment message number *)
- Message_No := Message_No + 1;
-
- (* Read 1st two lines of message *)
-
- READLN( Message_File , Message_L1 );
- READLN( Message_File , Message_L2 );
-
- (* Check if recipient is current user *)
-
- IF ( COPY( Message_L2, 13, LENGTH( Message_L2 ) - 12 ) =
- Cur_User_Name ) OR ( NOT Personal_Only ) THEN
-
- BEGIN (* Display this message *)
-
- (* Increment personal messages count *)
-
- Msg_Count := Msg_Count + 1;
-
- STR( Message_No : 5 , CMessage_No );
-
- Host_Send_String( CR_LF_Host );
- List_Prompt( Line_Count , Scan_Done );
- IF Scan_Done THEN GOTO Scanning_Done;
-
- (* Display message number *)
-
- Host_Send_String_With_CR('Message #' + CMessage_No );
- List_Prompt( Line_Count , Scan_Done );
- IF Scan_Done THEN GOTO Scanning_Done;
-
- (* Display 1st 2 header lines *)
-
- Host_Send_String_With_CR( COPY( Message_L1, 4,
- LENGTH( Message_L1 ) - 3 ) );
- List_Prompt( Line_Count , Scan_Done );
- IF Scan_Done THEN GOTO Scanning_Done;
-
- Host_Send_String_With_CR( COPY( Message_L2, 4,
- LENGTH( Message_L2 ) - 3 ) );
- List_Prompt( Line_Count , Scan_Done );
- IF Scan_Done THEN GOTO Scanning_Done;
-
- (* Display remaining header info *)
- FOR I := 3 TO 5 DO
- BEGIN
- READLN( Message_File , Message_Line );
- Message_Line := COPY( Message_Line, 4,
- LENGTH( Message_Line ) - 3 );
- Host_Send_String_With_CR( Message_Line );
- List_Prompt( Line_Count , Scan_Done );
- IF Scan_Done THEN GOTO Scanning_Done;
- END;
-
- Host_Send_String_With_CR(' ');
- List_Prompt( Line_Count , Scan_Done );
-
- END (* Display this message *);
-
- (* Scan for end of message *)
- IF ( NOT Scan_Done ) THEN
- REPEAT
- READLN( Message_File , Message_Line );
- UNTIL ( COPY( Message_Line, 1, 6 ) = '== End' );
-
- UNTIL ( Message_No >= NMessages ) OR ( Scan_Done );
-
- Scanning_Done:
-
- (*$I-*)
- CLOSE( Message_File );
- (*$I+*)
- (* Notify user if no personal messages *)
- IF Personal_Only THEN
- IF Msg_Count = 0 THEN
- BEGIN
- Host_Send_String_With_CR(' ');
- Host_Send_String_With_CR('You have no personal messages waiting.');
- END;
-
- END (* Scan_Messages *);
-
- (*----------------------------------------------------------------------*)
- (* Enter_Comment --- Enter a comment *)
- (*----------------------------------------------------------------------*)
-
- PROCEDURE Enter_Comment;
-
- (*----------------------------------------------------------------------*)
- (* *)
- (* Procedure: Enter_Comment *)
- (* *)
- (* Purpose: Enters comment into comment file. *)
- (* *)
- (* Calling Sequence: *)
- (* *)
- (* Enter_Comment; *)
- (* *)
- (* Remarks: *)
- (* *)
- (* The comments file is PIBTERM.CMT. *)
- (* *)
- (*----------------------------------------------------------------------*)
-
- VAR
- Quit: BOOLEAN;
-
- BEGIN (* Enter_Comment *)
-
- Quit := FALSE;
- (* Open comments file *)
-
- ASSIGN( Comments_File, Home_Dir + 'PIBTERM.CMT' );
- (*$I-*)
- RESET ( Comments_File );
- (*$I+*)
- (* If it exists, open for append. *)
- (* If it doesn't exist, open for write. *)
- IF Int24Result <> 0 THEN
- BEGIN
- WRITELN('Creating comments file PIBTERM.CMT');
- (*$I-*)
- REWRITE( Comments_File );
- (*$I+*)
- IF Int24Result <> 0 THEN
- BEGIN
- Host_Send_String( CR_LF_Host );
- Host_Send_String_With_CR('Sorry, can''t accept comments now.');
- Quit := TRUE;
- END;
- END
- ELSE
- BEGIN
- (*$I-*)
- CLOSE( Comments_File );
-
- APPEND( Comments_File );
- (*$I+*)
-
- IF Int24Result <> 0 THEN
- BEGIN
- Host_Send_String( CR_LF_Host );
- Host_Send_String_With_CR('Sorry, can''t accept comments now.');
- Quit := TRUE;
- END;
- END;
-
- Recipient_Name := 'SYSOP';
- Message_Subject := ' ';
-
- IF ( NOT Quit ) THEN
- Get_A_Message( Comments_File );
-
- (*$I-*)
- CLOSE ( Comments_File );
- (*$I+*)
-
- END (* Enter_Comment *);
-
- (*----------------------------------------------------------------------*)
-
- BEGIN (* Process_Host_Commands *)
-
- (* Scan for personal mail on *)
- (* first entry here. *)
- IF Host_Section = 'I' THEN
- BEGIN
-
- Host_Send_String_With_CR(' ');
- Host_Send_String_With_CR('Scanning for personal messages ... ');
-
- Scan_Messages( TRUE );
-
- Host_Section := 'M';
-
- END;
- (* Prompt for commands *)
- Display_Host_Commands;
- (* Assume input from remote *)
- Kbd_Input := FALSE;
- (* Wait for command to be entered *)
- REPEAT
- Done := Done OR ( NOT Host_Carrier_Detect );
- UNTIL Done OR Async_Receive( Ch ) OR KeyPressed;
-
- (* Process input from keyboard *)
- IF KeyPressed THEN
- BEGIN
- READ( KBD , Ch );
- Kbd_Input := TRUE;
- IF ( ORD( Ch ) = ESC ) AND KeyPressed THEN
- BEGIN
- READ( Kbd, Ch );
- IF ORD( Ch ) = F1 THEN
- Ch := 'G'
- ELSE IF ORD( Ch ) = F2 THEN
- Ch := 'Q';
- END;
- END;
-
- IF ( Not DONE ) THEN
- (* Echo command *)
-
- Host_Send_String( Ch + CR_LF_Host );
- WRITELN;
- IF Printer_On THEN
- WRITELN( Lst, Ch );
- IF Capture_On THEN
- WRITELN( Capture_File, Ch );
-
- (* Process command request *)
- CASE UpCase( Ch ) OF
-
- 'E': Enter_Message;
- 'R': Read_Messages;
- 'Q': BEGIN
- IF Kbd_Input THEN
- BEGIN
- Host_Send_String_With_CR('System operator shutting ' +
- ' down system.');
- Host_Send_String_With_CR('Thanks for calling.');
- Done := TRUE;
- END
- ELSE
- BEGIN
- Host_Send_String_With_CR('Quit and logoff');
- Done := TRUE;
- END;
- END;
- 'F': Host_Section := 'F';
- 'G': BEGIN
- IF Kbd_Input THEN
- BEGIN
- Host_Send_String_With_CR(' ... System operator wishes' +
- ' to chat, please wait ...');
- Host_Send_String_With_CR(' ');
- Gossip_Mode;
- END
- ELSE
- BEGIN
- Page_Sysop( Sysop_Found );
- IF Sysop_Found THEN Gossip_Mode;
- END;
- END;
- 'C': Enter_Comment;
- 'P': Scan_Messages( TRUE );
- 'X': Expert_On := NOT Expert_On;
- 'S': Scan_Messages( FALSE );
- ELSE Host_Send_String( ^G );
-
- END (* CASE *)
-
- END (* Process_Host_Commands *);
-
- (*----------------------------------------------------------------------*)
- (* Get_UserInfo --- Read in user name and password *)
- (*----------------------------------------------------------------------*)
-
- OVERLAY PROCEDURE Get_UserInfo( VAR Found: BOOLEAN );
-
- (*----------------------------------------------------------------------*)
- (* *)
- (* Procedure: Get_UserInfo *)
- (* *)
- (* Purpose: Gets user name and password from remote user. *)
- (* *)
- (* Calling Sequence: *)
- (* *)
- (* Get_UserInfo( VAR Found: BOOLEAN ); *)
- (* *)
- (* Done --- set TRUE if user name found and carrier not *)
- (* dropped. *)
- (* *)
- (*----------------------------------------------------------------------*)
-
- VAR
- MyPass: AnyStr;
-
- BEGIN (* Get_UserInfo *)
- (* Open log file and record this login *)
-
- ASSIGN( Log_File, 'PIBTERM.LOG' );
- (*$I-*)
- RESET ( Log_File );
- (*$I+*)
-
- IF Int24Result = 0 THEN
- BEGIN
- CLOSE( Log_File );
- APPEND( Log_File );
- END
- ELSE
- REWRITE( Log_File );
-
- (* Prompt for first name *)
-
- Host_Send_String_With_CR(' ');
- Host_Prompt_And_Read_String('Enter first name: ', Fname, TRUE );
- Fname := TRIM( UpperCase( Fname ) );
-
- (* Prompt for second name *)
-
- Host_Send_String_With_CR(' ');
- Host_Prompt_And_Read_String('Enter last name: ', Lname, TRUE );
- Lname := TRIM( UpperCase( Lname ) );
-
- (* See if valid user name *)
- Cur_User := 0;
- Found := FALSE;
-
- REPEAT
- Cur_User := Cur_User + 1;
- WITH User_List[Cur_User] DO
- Found := ( Fname = First_Name ) AND ( Lname = Last_Name );
- UNTIL ( Found OR ( Cur_User >= MaxUsers ) );
-
- (* Remember name for message scans *)
-
- Cur_User_Name := Fname + ' ' + Lname;
-
- (* Error if name not in user file *)
- IF ( NOT Found ) THEN
- BEGIN
- Host_Send_String_With_CR(' ');
- Host_Send_String_With_CR('Not a valid user name.');
- END;
- (* Prompt for password *)
-
- IF ( Found AND Async_Carrier_Detect ) THEN
- BEGIN
-
- Host_Send_String_With_CR(' ');
- Host_Prompt_And_Read_String('Enter Password: ', MyPass, FALSE );
- Host_Send_String_With_CR(' ');
-
- (* Check if password valid *)
-
- IF MyPass = User_List[Cur_User].PassWord THEN
- BEGIN
-
- Host_Send_String_With_CR('Password OK');
-
- Found := TRUE;
-
- WRITELN( Log_File,Fname,' ',Lname,' logged on at ',
- TimeString( TimeOfDay ), ' on ',DateString );
- IF Printer_On THEN
- WRITELN( Lst , Fname,' ',Lname,' logged on at ',
- TimeString( TimeOfDay ), ' on ',DateString );
- IF Capture_On THEN
- WRITELN( Capture_File , Fname,' ',Lname,' logged on at ',
- TimeString( TimeOfDay ), ' on ',DateString );
-
- END
- ELSE
- BEGIN
-
- Host_Send_String_With_CR('Password wrong');
-
- Found := FALSE;
-
- WRITELN( Log_File,Fname,' ',Lname,' logon try at ',
- TimeString( TimeOfDay ), ' on ',DateString,
- ' password entered = ', MyPass );
- IF Printer_On THEN
- WRITELN( Lst , Fname,' ',Lname,' logon try at ',
- TimeString( TimeOfDay ), ' on ',DateString,
- ' password entered = ', MyPass );
- IF Capture_On THEN
- WRITELN( Capture_File , Fname,' ',Lname,' logon try at ',
- TimeString( TimeOfDay ), ' on ',DateString,
- ' password entered = ', MyPass );
- END;
-
- END;
-
- (*$I-*)
- CLOSE( Log_File );
- (*$I+*)
-
- END (* Get_UserInfo *);